/*	
 *				
 *					ISNW ---- It is a war.It is not warcraft!
 *
 *
 *					Author:					zhoukeli(haxixi_keli)
 *					Filename:				IDriver.h
 *					CreateTime:				2008/12/21
 *					ModifyTime:				2008/12/21
 *
 */

#ifndef __ISNW_I_DRIVER_H__
#define __ISNW_I_DRIVER_H__

#include "IReferenceCounted.h"
#include "isnwVertex.h"
#include "isnwMaterial.h"
#include "matrix4.h"
#include "IImage.h"

namespace ISNW
{
namespace video
{
	enum TRANSFORM_TYPE
	{
		E_WORLD,
		E_PROJECTIVE,
		E_VIEW,
	};

	class IDriver : public IReferenceCounted
	{
	public:
		virtual ~IDriver(){}

	public:
		//! draw indexed triangle
		virtual bool drawtriangles(void* v_buffer,video::E_VERTEX_TYPE v_type,u32 vertex_num,void* i_buffer,u32 primitive_num) = 0;

		//! set current material
		virtual bool setmaterial(video::material) = 0;

		virtual void setTransform(TRANSFORM_TYPE,core::matrix4f) = 0;

		virtual IImage* getImage(const c8*) const = 0;
	};
} // end namespace video
} // end namespace ISNW
#endif